home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / program / tpwfort.zip / CHCASW.FOR < prev    next >
Text File  |  1992-06-09  |  3KB  |  115 lines

  1.       SUBROUTINE CHCASE(INNAME,OUTNAM,ITYPE,IERR,IOCHEK [REFERENCE])
  2. C
  3. C     ------------------------------------------------------------------
  4. C     PURPOSE:
  5. C              CONVERT ALL CHARACTERS IN A FILE TO UPPER OR LOWER CASE.
  6. C              STRIPS OFF ANYTHING PAST COLUMN 72, HOWEVER.
  7. C
  8. C     ------------------------------------------------------------------
  9. C     INPUT PARAMETERS WHICH MUST BE SUPPLIED BY THE CALLING PROGRAM:
  10. C
  11. C     INNAME  IS NAME OF (INPUT) FILE (MAX CHARS=64) TO BE CONVERTED.
  12. C             THE CALLING PROGRAM SHOULD CHECK FOR EXISTENCE!
  13. C
  14. C     OUTNAME IS NAME (MAX CHARS=64) OF FILE TO USE FOR OUTPUT.
  15. C             THE CALLER SHOULD HANDLE DECICIONS ON PREEXISTING FILES
  16. C             SINCE THIS ROUTINE WILL OVERWRITE THEM UNCONDITINALLY.
  17. C
  18. C     ITYPE: (TYPE OF CONVERSION DESIRED):
  19. C            1 - CONVERT ALL CHARACTERS TO UPPER CASE.
  20. C            2 - CONVERT ALL CHARACTERS TO LOWER CASE.
  21. C
  22. C     ------------------------------------------------------------------
  23. C
  24. C     RETURNED PARAMETERS:
  25. C
  26. C     IERR:   (ERROR RETURN CODE):
  27. C             0 <-> NO PROBLEM
  28. C             1 <-> INPUT FILE COULD NOT BE OPENED.
  29. C             2 <-> OUPUT FILE COULD NOT BE OPENED.
  30. C
  31. C
  32. C     IOCHEK: SEE THE FORTRAN MANUALS.
  33. C     ------------------------------------------------------------------
  34. C
  35. C THIS IS PART OF AN ATTEMPT TO SEE IF I CAN CREATE A DLL USING
  36. C MICROSOFT FROTRAN 5.1 AND THEN CALL IT TROM TURBOPASCAL FOR WINDOWS.
  37. C
  38. C
  39. C      STRIPS COLS 72-80 FROM FORTRAN SOURCE CODES
  40. C      AND CHANGES CASE UPPER TO LOWER OR VICE VERSA
  41. C
  42.       CHARACTER ALINE(80)
  43.       CHARACTER*64 INNAME,OUTNAM
  44.       CHARACTER SPC
  45. C
  46.       DATA IOIN/2/  IOUT /3/
  47. C
  48.       IERR = 0
  49.       OPEN (IOIN,FILE=INNAME,STATUS='OLD',IOSTAT=IOCHEK,ERR = 910)
  50.       OPEN (IOUT,FILE=OUTNAM,STATUS='UNKNOWN',IOSTAT=IOCHEK,ERR=920)
  51. C
  52.    40 FORMAT(80A1)
  53.       SPC=CHAR(32)
  54.       IAU=65
  55.       IZU=90
  56.       IAL=97
  57.       IZL=122
  58. C
  59.   140 CONTINUE
  60. C
  61. C     READ A LINE OF CODE FROM THE INPUT FILE
  62.  
  63.       READ(IOIN,40,END=500,ERR= 930,IOSTAT=IOCHEK) ALINE
  64. C
  65. C     FIND THE LENGTH OF THE LINE W/O TRAILING SPACES
  66. C
  67.       LEN=73
  68.       DO 150 I=1,72
  69.       LEN=LEN-1
  70.       IF(ALINE(LEN).NE.SPC) GOTO 152
  71.   150 CONTINUE
  72.   152 CONTINUE
  73. C
  74.       IF (ITYPE.EQ.1) THEN
  75.  
  76. C
  77. C     NOW CONVERT THE CHARACTERS TO UPPER CASE
  78. C
  79.       DO 155 I=1,LEN
  80.       INX=ICHAR(ALINE(I))
  81.       IF(INX.GE.IAL.AND.INX.LE.IZL) ALINE(I)=CHAR(INX-32)
  82.   155 CONTINUE
  83. C
  84.       ELSE
  85. C
  86. C     OR  CONVERT TO LOWER CASE
  87. C
  88.       DO 158 I=1,LEN
  89.       INX=ICHAR(ALINE(I))
  90.       IF(INX.GE.IAU .AND. INX.LE.IZU) ALINE(I)=CHAR(INX+32)
  91.   158 CONTINUE   
  92.       END IF
  93. C
  94. C     WRITE SIGINIFICANT PORTION TO THE OUTPUT FILE
  95. C
  96.   160 WRITE(IOUT,40)(ALINE(I),I=1,LEN)
  97. C
  98. C     GO BACK FOR THE NEXT LINE
  99. C
  100.  
  101.       GOTO 140
  102. C
  103. C     AT END OF INPUT FILE, CLOSE BOTH IOUT AND IOIN
  104.   500 CLOSE(IOUT)
  105.       CLOSE(IOIN)
  106.       RETURN
  107.   910 IERR = 1
  108.       RETURN
  109.   920 IERR = 2
  110.       RETURN
  111.   930 IERR = 3
  112.       RETURN
  113.       END
  114.